#pragma once


#include <cstdint>

//hold all the data of a vector
template<typename T>
class CVectorBase
{
public:
    uint64_t Num() const
    {
        return ArrayNum;
    }

    const uint64_t* NumPtr() const
    {
        return &ArrayNum;
    }

    uint64_t Capacity() const
    {
        return AllocatedNum;
    }

    const uint64_t* CapacityPtr() const
    {
        return &AllocatedNum;
    }
    
    bool Empty() const
    {
        return ArrayNum == 0;
    }

protected:
    T* LowLevelData = nullptr;
    uint64_t ArrayNum = 0;
    uint64_t AllocatedNum = 0;
};